package cn.zniot.so.transport;

import cn.zniot.so.transport.exception.NetException;

import org.apache.mina.core.service.IoHandler;
import org.apache.mina.filter.codec.ProtocolCodecFactory;

/**
 * TCP/UDP服务器接口
 */
public interface IServer {

	/**
	 * 初始化
	 */
	void init();

	/**
	 * 创建并启动服务器
	 * 
	 * @throws NetException
	 */
	void startup() throws NetException;

	/**
	 * 关闭服务器
	 * 
	 * @throws NetException
	 */
	void shutdown() throws NetException;

	/**
	 * 设置server codecFactory
	 * 
	 * @param factory
	 */
	void setProtocolCodec(ProtocolCodecFactory factory);

	/**
	 * 设置server handler
	 * 
	 * @param handler
	 */
	void setHandler(IoHandler handler);

	/**
	 * 获取服务器的运行状态
	 * 
	 * @return
	 */
	String getStatus();
}
